

<!DOCTYPE html>
<html lang="zh" data-default-color-scheme=&#34;auto&#34;>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/walker_sue/img/favicon.png">
  <link rel="icon" type="image/png" href="/walker_sue/img/favicon.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="">
  <meta name="author" content="lk">
  <meta name="keywords" content="">
  <title>评分卡模型 - Walker_Sue</title>

  <link  rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.staticfile.org/github-markdown-css/4.0.0/github-markdown.min.css" />
  <link  rel="stylesheet" href="/walker_sue/lib/hint/hint.min.css" />

  
    
    
      
      <link  rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.0/styles/github-gist.min.css" />
    
  

  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_kmeydafke9r.css">


<link  rel="stylesheet" href="/walker_sue/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script  src="/walker_sue/js/utils.js" ></script>
  <script  src="/walker_sue/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 5.3.0"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/walker_sue/">&nbsp;<strong>Walker</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/walker_sue/">
                <i class="iconfont icon-home-fill"></i>
                主页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/walker_sue/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/walker_sue/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/walker_sue/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/walker_sue/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <i class="iconfont icon-books"></i>
                文档
              </a>
              <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                
                  
                  
                  
                  <a class="dropdown-item" target="_blank" rel="noopener" href="https://hexo.fluid-dev.com/">
                    
                    主题博客
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" target="_blank" rel="noopener" href="https://hexo.fluid-dev.com/docs/guide/">
                    
                    配置指南
                  </a>
                
                  
                  
                  
                  <a class="dropdown-item" target="_blank" rel="noopener" href="https://hexo.fluid-dev.com/docs/icon/">
                    
                    图标用法
                  </a>
                
              </div>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;</a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" href="javascript:">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner intro-2" id="background" parallax=true
         style="background: url('/walker_sue/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="container page-header text-center fade-in-up">
    <span class="h2" id="subtitle">
    
</span>




<div class="mt-3">
  
  
    <span class="post-meta">
      <i class="iconfont icon-date-fill" aria-hidden="true"></i>
      <time datetime="2021-05-14 13:49" pubdate>
        May 14, 2021 pm
      </time>
    </span>
  
</div>

<div class="mt-1">
  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      6.2k 字
    </span>
  

  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      64
       分钟
    </span>
  

  
  
</div>


</div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="container nopadding-md" id="board-ctn">
        <div class="py-5" id="board">
          <article class="post-content mx-auto" id="post">
            <!-- SEO header -->
            <h1 style="display: none">评分卡模型</h1>
            
            <div class="markdown-body" id="post-body">
              <div align='center' ><font size='10'>机器学习-BI</font></div>

<hr>
<div align='center' ><font size='5'>Week_11</font></div>
<div align='center' ><font size='5'>评分卡模型</font></div>

<hr>
<h2 id="评分卡模型"><a href="#评分卡模型" class="headerlink" title="评分卡模型"></a>评分卡模型</h2><h3 id="一、评分卡模型"><a href="#一、评分卡模型" class="headerlink" title="一、评分卡模型"></a>一、评分卡模型</h3><p><strong>评分卡模型：</strong> <br></p>
<ul>
<li>评分卡模型是常用的金融风控手段之一<ul>
<li>风控，就是风险控制，我们采取各种措施和方法，减少风险发生的可能性，或风险发生时造成的损失</li>
</ul>
</li>
<li>根据客户的各种属性和行为数据，利用信用评分模型，对客户的信用进行评分，从而决定是否给予授信，授信的额度和利率，减少在金融交易中存在的交易风险</li>
<li>按照不同的业务阶段，可以划分为三种：<ul>
<li>贷前：申请评分卡（Application score card），称为A卡: 在客户申请处理期，预测客户开户后一定时期内违约拖欠的风险概率，有效排除了信用不良客户和非目标客户的申请</li>
<li>贷中：行为评分卡（Behavior score card），称为B卡: 在帐户管理期，根据账户历史上所表现出来的各种行为特征来预测该账户未来的信贷表现</li>
<li>贷后：催收评分卡（Collection score card），称为C卡: 在帐户管理期，对逾期帐户预测催收策略反应的概率，从而采取相应的催收措施</li>
</ul>
</li>
</ul>
<br>

<h3 id="二、速览评分模型搭建"><a href="#二、速览评分模型搭建" class="headerlink" title="二、速览评分模型搭建"></a>二、速览评分模型搭建</h3><p><strong>样本准备</strong>  <br></p>
<p>在正式开始建模前，首先需要搞清楚一点：产品的目标客群是怎样的？建成的评分卡是要用在哪些人身上的？有哪些样本是不适合拿来建模的？举个例子，如果准入规则直接拒绝了25岁以下的客户，那么对应建模时也应该筛选掉这部分样本（非准入客群）。又或者，有一些客户虽然申请了额度，但是并未真正申请放款，那么这些无行为表现客户也不应该包含在建模样本之内。<br></p>
<p><strong>好坏定义</strong> <br></p>
<p>相信很多没做过建模的读者朋友也听说过“好客户”、“坏客户”的说法，但其实在这其中，怎样的客户算“好”，怎样的客户算“坏”都是很有讲究的。这个好坏定义首先和评分卡真正关心的客户类型有关，比如说一个反欺诈评分卡的“坏客户”定义可能是首逾30天以上（FPD30+），而审批评分卡的定义可能是M3+。而具体逾期多少天算“坏”，就要进行Roll Rate分析了。 <br></p>
<p><strong>观察期和表现期</strong> <br></p>
<p>观察期是指用于生成客户特征的时间区间，用于收集信用历史和行为特征等信息，以提炼能预测未来信用表现的预测变量。 <br></p>
<p>观察期过长可能导致大量客户无法获取相应时间长度的数据，大批样本不能进入模型；观察期过短会导致样本无法生成足够多有效的时间切片变量。表现期是对观察点上客户表现进行监控的时间周期。这些帐户根据截止到表现点的表现被分类成“好”、“坏”。表现期需要有足够的长度，从而保证样本群体分类的稳定性，使客户的逾期行为充分表现出来。但也不能够过于长，即使可获得很长时间的历史数据，还需要在完整性（有多少个坏样本需要捕捉）和数据质量之间保持平衡。 <br></p>
<p><strong>细分分析</strong> <br></p>
<p>有的时候，如果面对各种各样的客户通通使用同一张评分卡，可能效果并不是那么的好；但是如果对不同类型（某种维度意义上）客户都使用不同的评分卡，过多的评分卡不好管理，不同评分卡之间得出的结果有时也不具备可比性。 <br></p>
<p>因此，需要找出最佳的群体分组，使得以此为基础建立的一组评分模型可使整个评分系统的预测能力最大化。当然，如果是在样本量比较少的情况下，这一步就可以跳过了。 <br></p>
<p><strong>数据准备</strong> <br></p>
<p>数据准备的过程包括数据清洗、缺失值处理、离群值处理等等，目的是让数据足够“干净”，而不会因为其中的一些乱码或格式问题影响后续建模。在逻辑回归模型中，合理的缺失值和离群值都是可以不做处理的，因为在进行分箱和WOE转换时可以解决掉这些问题。 <br></p>
<p>其中合理指的是数据本身就是缺失的，比如在填写某些非必填信息的时候客户没有填写导致的缺失，而不是像第三方数据覆盖率不足等原因导致的缺失，类似这种本不应该缺失只是因为各种原因没有获取到数据而导致的缺失，是应该进行缺失值处理的。在这一步，可以筛选掉一部分缺失率过高的变量。 <br></p>
<p><strong>变量衍生</strong> <br></p>
<p>变量衍生是整个建模过程中最重要的一个环节，往往在同样的数据和维度条件下，谁的评分卡模型效果更好，看的就是这一步。变量衍生有各种各样的方法，比的就是谁的脑洞更大。可以简单粗暴的根据业务理解进行变量的组合，生成交叉变量，比如说，不同年龄段的客户的婚姻状况可以给予不同的打分标准。又或者，可以利用一些机器学习算法，比如xgboost，从数据的角度来进行变量衍生。 <br></p>
<p><strong>训练集和验证集</strong> <br></p>
<p>在真正进入建模过程前，还需要预留出一部分样本用作模型的验证，这是为了防止模型的不稳定：在训练集上表现良好、在验证集中却无法很好的预测。然而只要手气足够好，随机抽取验证样本时足够“随机”，训练集和验证集各指标的分布足够近似，验证集的表现一般不会和训练集有太大的差距，但这并不一定代表模型就是稳定的了。 <br></p>
<p>因此，最好的做法是再预留出一部分时间外测试集，选取与建模样本不同时间段的样本再对模型表现进行验证。比如，如果选取的审批时间在1-3月的客户作为建模样本，那么可以将4月的客户作为测试样本测试模型的效果。 <br></p>
<p><strong>分箱和WOE转换</strong> <br></p>
<p>在进行变量衍生后，我们可能会产生好几百上千个变量，有连续性变量也有分类型（字符型）变量。然而，字符型变量是没有办法直接作为入参参与逻辑回归拟合的，而为了使自变量和目标变量呈正相关的关系往往会对数值型变量也进行分箱和WOE转换。毕竟如果按照原数据入模，会导致评分卡非常不稳定，同时变量的取值和得分的关系也会变得非常的杂乱无章，失去业务上的可解释性。另外，在这一步，根据每个变量的IV值，也可以筛选掉一部分区分能力较弱的变量。 <br></p>
<p><strong>共线性检验</strong> <br></p>
<p>共线性检验也是筛选变量过程中非常重要的一步。共线性指的是模型的变量之间存在较高的相关性，某一个变量可以被其他一部分变量所解释。共线性高会导致回归拟合出来的系数发生严重的偏离。常用的指标为相关系数和VIF。 <br></p>
<p><strong>逐步回归</strong> <br></p>
<p>这是一个基本上完全交给程序的过程，通过不断增加、删减变量，从数据层面挑选使模型的预测能力达到最大的变量组合。然而，虽然已经进入变量筛选阶段的尾声，逐步回归跑出来的变量也不一定就符合要求了，还会有可能出现逻辑回归的系数正负符号不一致的情况。这种时候，就需要结合前面的共线性检验，不断的调整进入逐步回归的变量，以得到合理的最终入模变量。 <br></p>
<p><strong>模型表现</strong> <br></p>
<p>模型表现的评估常见的也就是大家耳熟能详的那几个指标：KS值、Gini、AUC、Lift等等。需要注意的是，模型不能一味的追求高KS，所有变量在建模过程中都针对显著性、相关性、冗余及多重共线性进行测试。如果变量在各维度上不能符合标准，即使会牺牲KS，也将被从模型中剔除。 <br></p>
<p><strong>拒绝推断</strong> <br></p>
<p>拒绝推断是给被拒绝的申请人赋予一个理论上的表现的过程。等价于说：“如果申请人被接受了，他们的表现会是什么？”由于审批时有一定的拒绝条件，所以被批准的客户群体并不是申请群体的无偏差代表，相反由于审批的选择性导致了被批准客户群体的信用质量高于申请人群体的总体信用质量。如果最终的评分卡只是基于被接受的群体创建，可能会造成一定程度的偏差。 <br></p>
<p>拒绝推断的流程为：先建立一个已有客户模型，使用已有客户模型给拒绝客户打分，再基于已有客户和拒绝客户的群体集合建立新的评估分数。如果之前的审批策略效果不佳，已有客群和拒绝客群差别很小，是可以跳过拒绝推断这一步的。 <br></p>
<p><strong>标准评分卡</strong> <br></p>
<p>在评分卡模型建立的最后，需要将模型转化成一个更加直观、更容易部署的形式，也就是标准评分卡。标准评分卡可以一眼看出每一个入模变量落在哪个区间可以得到多少分。简单来说，就是需要将每个变量每个分箱的系数*WOE变成一个分数，这个过程会使用到三个参数：标准分、标准好坏比、PDO，最终计算出好坏比和分数的一一对应关系。 <br></p>
<p><img src="risk01.png" srcset="/walker_sue/img/loading.gif"></p>
<h3 id="三、细说评分卡模型搭建"><a href="#三、细说评分卡模型搭建" class="headerlink" title="三、细说评分卡模型搭建"></a>三、细说评分卡模型搭建</h3><p><strong>1.A、B、C广义三种评分模型</strong> <br><br>三张卡的区别： <br></p>
<blockquote>
<ul>
<li>使用的时间不同。分别侧重贷前、贷中、贷后；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>数据要求不同。申请评分卡一般可做贷款0-1年的信用分析，行为评分卡则是在申请人有了一定行为后，有了较大数据进行的分析，一般为3-5年，催收评分卡则对数据要求更大，需加入催收后客户反应等属性数据。</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>使用模型不同。在申请评分卡中常用的有逻辑回归，AHP等，而在行为和催收两种评分卡中，常使用多因素逻辑回归，精度等方面更好。</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>变量不同。申请评分卡用到的大部分是申请者的背景变量，比如客户填写的基础信息+第三方外部数据源查询信息，而且这个模型一般也会比较谨慎。行为评分卡利用了很多基于交易的变量，可以预测一个客户未来的违约概率。</li>
</ul>
</blockquote>
<br>

<p><strong>2.数据业务理解</strong> <br><br>变量业务理解梳理，尽管很繁琐，却尤为重要。 <br></p>
<p>对于现在很流行的cash loan业务，客户申请收集基本三要素：姓名，身份证、手机号，通过用户授信、SDK抓取，以及三方数据调用，可以获得多维度的用户数据 <br></p>
<p><strong>3.数据探索分析</strong> <br><br>在SAS BASE里有几个函数可以用来进行数据探索分析： <br></p>
<p>3.1.Proc Means <br></p>
<p>直接运行 proc means过程时，会对所有数值型变量进行操作，得到各变量的非缺失观测数N，均值MEAN，标准差STD DEV，最大值Max和最小值Min，我们还可以增加range（极差） sum（和） var（方差）nmiss（缺失值个数）median（中值）等选项得到其统计量。 <br></p>
<p>3.2.Proc Freq <br></p>
<p>直接运行 proc freq过程时，会对所有变量（一般针对离散型变量，如果是连续型变量，通过Format进行离散化处理）进行操作，得到各变量的频数、百分比、累积频数、累积百分比，我们还可以增加多变量的交叉表频数统计。 <br></p>
<p>3.3.Proc Univariate <br></p>
<p>探索性数据分析最常用的过程步之一就是proc univariate，直接运行 proc univariate过程时,会对所有变量进行操作,得到矩、位置和可变形的基本测度、位置检验、分位数、极值观测。 <br></p>
<p>若加了一个HISTOGRAM则增加了一个直方图；加一个NORMAL选项则在直方图上面加了一根拟合后的正态分布图，并且还增加了拟合正态分布的参数估计、拟合优度、分位数；加一个KERNEL则在直方图中加了一根实际数据核分布的密度曲线；加一个plot选项，在结果中增加了分析变量数据的分布图、箱型图、以及概率图，等等。 <br></p>
<p><strong>4.定义目标变量</strong> <br><br>目标变量就是假定申请客户的好坏，逻辑回归公式里的Y,对于评分卡目标变量Y的界定，我们主要从Roll Rate和Vintage来观察分析，重点需要考虑三个方面： <br></p>
<blockquote>
<ul>
<li>逾期流转比例</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>观察期和表现期</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>样本容量</li>
</ul>
</blockquote>
<p>再分析Vintage,Vintage可以关注下面3个方面： <br></p>
<blockquote>
<ul>
<li>观察每月审批通过客户后第N个月的逾期比率，对比每月波动，通常波动与审批策略调整有关，此波动在数据准备阶段的样本抽样过程需要关注；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>逾期分布，集中在通过后的前三个月说明审批的策略有待改进，超过三个月之后才慢慢增加，说明贷中的管理有待提高；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>确定逾期率在经历第N期趋于稳定；</li>
</ul>
</blockquote>
<br>

<p><strong>5.样本设计及抽取策略</strong> <br><br>在开发评分模型前，如果可以在样本设计阶段尽可能的涵盖到体现客户风险的所有特征维度，那么对于之后模型开发工作，将会起到事半功倍的效果。 <br><br><img src="risk5.1.jpg" srcset="/walker_sue/img/loading.gif"><br><img src="risk5.2.jpg" srcset="/walker_sue/img/loading.gif"></p>
<p><strong>6.数据预处理</strong> <br></p>
<ul>
<li>数据清洗<br>= 缺失值处理 </li>
<li>异常值处理<br>

</li>
</ul>
<p><strong>7.特征衍生</strong> <br><br>造衍生变量是整个开发评分卡模型过程中最重要、最艰辛也最有趣的一个节点。衍生变量的好坏往往会影响评分卡模型的各种测评指标，决定策略的反欺诈能力；可以结合一些算法比如DT、Random Forrest进行特征工程造衍生变量，但是造好的变量是否可以进入评分卡模型以及是否容易在策略引擎上部署等问题又要反复校验。 <br></p>
<blockquote>
<ul>
<li>善用产品准入规则变量，弱弱联合会变强；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>多参考Strategy变量，往往有意想不到的效果；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>风控核心防欺诈，设身处境去思考；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>风控基本出发点是评估个人还款能力和还款意愿；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>合理利用一些算法，省时省力又高效；</li>
</ul>
</blockquote>
<br>

<p>8.特征变量筛选 <br><br>8.1缺失率 <br></p>
<p>一个变量，如果缺失率过高，他所包含的信息往往也比较少，做缺失值填补也会比较困难。同时该变量如果在建模样本中大量缺失，很可能投入生产后也是差不多的情况，那进入模型也就没有太大的意义了。 <br></p>
<p>8.2区分能力 <br></p>
<p>一般情况下，如果模型中加入过多的指标往往会比较冗余，因此在有限个指标中要使模型的效果更佳，自然需要挑选对坏样本识别能力较强的变量。通常的做法是计算每个变量的IV值，或者单变量KS/AR值，并从大到小进行排序，挑选排名前多少的变量，或者大于一定阈值的变量。对于IV值较低的变量，他们本身能提供给模型的贡献也比较少，剔除掉也不足为惜了。 <br></p>
<p>8.3稳定性 <br></p>
<p>一个优秀的模型，除了能够很好的区分好坏样本以外，还需要足够的稳定，防止随着时间的推移过快衰退的现象出现。因此模型中的每一个变量也需要足够的稳定。要进行判断，可以计算不同时间切片之间该指标的PSI。比如说如果使用了2018年全年的样本作为建模样本的话，可以将样本切分为上半年和下半年两部分，并计算每个指标在这两个部分间的PSI。如果变量的PSI&gt;-0.2，说明随着时间推移该变量的分布发生了很大的改变，那么如果它成为了入模变量，往往会导致模型整体变得不稳定。 <br></p>
<p>8.4相关性/共线性 <br></p>
<p>一个指标光是自己表现的足够好也是没有用的，还要考虑它和所有其他自变量之间的“团队协作能力”。一个优秀的团队，往往需要队员之间取长补短，各自分工，而不是大家擅长的事物都一样，而短板却无人弥补。放在模型上面也是一样的道理。如果模型中的自变量之间具有完全多重共线性，那么训练出来的系数便会失去统计学意义。即使是不完全共线性，也会导致系数失真，从而导致模型的效果无法达到预期。 <br></p>
<p>这个时候，如果单纯计算变量的VIF，虽然能检验共线性问题是否存在，但是却无法判断应该保留哪些变量、剔除哪些变量。因此可以综合考虑单变量或多变量的AR值。 <br></p>
<p>举个例子，如果变量A同时和变量B、变量C存在较强相关性，而变量B和变量C相关性较低，那么究竟应该保留A还是同时保留B和C呢？有一个比较简单的思路，可以计算变量A的单变量AR值，同时用变量B和变量C训练一个简易的逻辑回归模型，并计算这个模型的AR值，通过比较这两个单变量和模型的AR值来判断到底应该保留A还是B+C。如果变量A的AR值比模型的AR值还高，就说明变量A的表现会优于B和C的综合表现，可以名正言顺的剔除掉B和C了。 <br></p>
<p>8.5业务逻辑 <br></p>
<p>除了上面几点可以通过各种指标量化的筛选条件以外，业务逻辑也往往是一个不可忽视的门槛。 <br></p>
<p>比如说学历这个指标，从直观上来看往往学历越高，信用风险就越低。因此在分箱的过程中，各箱的坏样本率也需要符合这一趋势。否则最后转换为标准评分卡后，低学历客户的单项得分比高学历客户的还高，这显然是不合常理的。对于趋势与业务逻辑不一致的指标，往往也会予以剔除，来满足评分模型的可解释性。这就是为什么常说，做模型一定要将数据与业务相结合，光靠数据跑出来而没有业务做支撑的模型，往往也是不可靠的。 <br></p>
<p>8.6逐步回归 <br></p>
<p>逐步回归是一个不断往模型中增加或删除变量，直到找到最优的变量组合、新增变量不再产生具有统计显著意义的增量效应为止。一般来说，这就是指标筛选的最后一步了，如果使用SAS进行逐步回归往往也能控制住入模变量的显著性，因此此时最需要注意的是模型拟合出来的系数方向是否一致，如果出现不一致的情况，可以考虑在变量清单中剔除掉这部分指标，重新进行逐步回归分析，直到系数方向一致为止。 <br></p>
<p><strong>9.模型变量分箱</strong> <br></p>
<p>在搭建逻辑回归评分卡模型的时候，大多数步骤都可以用打包好的函数或代码快速实现，而最需要人工干预的步骤就是分箱。 <br><br>在人工调整分箱的时候，需要注意的地方有： <br></p>
<blockquote>
<ul>
<li>每个分箱之间的好坏比要有一定差异；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>每一箱中的样本数量不能过少；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>分箱的好坏比趋势要与业务常识保持一致；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>分箱切点的取值要符合业务常识。</li>
</ul>
</blockquote>
<br>

<p><strong>10.模型拟合</strong> <br><br><strong>前向逐步（Forward Stepwise）回归</strong> <br></p>
<p>顾名思义，FS（Forward Stepwise）回归是让所有建模指标变量一个一个地进入回归方程，按照预先设定的显著性检验标准，最显著的指标变量最先进入，然后其次就是次显著的指标变量进入，依次类推。 <br></p>
<p><strong>后向逐步（Back Stepwise）回归</strong> <br></p>
<p>明白了FS回归，BS回归就很容易理解。它的逻辑是首先让全部指标变量都进入回归方程，按照预先设定的显著性检验标准，把不显著的变量逐一剔除。 <br></p>
<p><strong>混合逐步（Combined Stepwise）回归</strong> <br></p>
<p>CS回归是融合FS和BS回归的优缺点，提出的一种变量选择方法，它的原理如下：按照预先设定的显著性检验标准，逐步加入或者剔除指标变量，可以由前向逐步回归开始，也可以由后向逐步回归开始，例如由前向逐步回归开始，当新指标变量进入时，如果老指标变量不满足预先设定的标准可以后向剔除，而对比前向逐步回归，变量一旦进入，就不再退出。 <br></p>
<p><strong>11.模型评估常用指标</strong> <br><br><strong>1.KS</strong> <br><br>KS曲线是一种表示评分卡有效性的可视化工具，基于经验累积分布函数(ECDF)画出好客户和坏客户在分数区间上的累积分布。 <br></p>
<p>$$<br>KS=Max{|retain_bad_pct - retain_good_pct|}<br>$$</p>
<p>我认为对于评分模型的KS取值应有如下要求： <br></p>
<blockquote>
<ul>
<li>KS&lt;0.2 模型的区分能力不高，价值不大；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>0.2&lt;=KS&lt;0.4 一般金融机构开发的评分模型KS大部分都集中在这个区间内，行为评分模型的KS会更高一点，相对于KS&lt;0.2的评分模型，此时的评分模型已经具备一定的区分能力，模型具有一定的使用价值，此时可以结合其他指标继续观察调优模型；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>0.4&lt;=KS&lt;=0.7 模型区分能力比较好，模型有应用价值；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>KS&gt;-0.7 模型好的难以令人置信，可能在变量中加入了业务目标衍生指标，需要对模型特征工程进行排查。</li>
</ul>
</blockquote>
<br>

<p><strong>2.GINI</strong> <br></p>
<p>GINI指标最早在量化风控上主要用于评分模型，对于训练出来的分数模型，需要一系列指标对模型进行稳定性、区分能力等效能度量。Gini系数是国际上通用的，用以衡量一个国家或地区居民收入差距的常用指标，所以，运用在评分模型中它也是表征评分模型的区分能力。 <br><br>针对评分卡集群来说，申请评分卡集的GINI标准： <br></p>
<blockquote>
<ul>
<li>Gini&lt;0.3,模型不太能接受；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>0.3&lt;=Gini&lt;0.35,模型区分能力一般，模型有优化空间；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>0.35&lt;=Gini&lt;=0.5,模型区分能力比较满意；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>Gini&gt;0.5，Gini越高越有过拟合的可能性；</li>
</ul>
</blockquote>
<p>行为评分卡集群的GINI标准：<br></p>
<blockquote>
<ul>
<li> Gini可能会超过0.8；</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li> Gini&lt;0.6，可能模型有问题。</li>
</ul>
</blockquote>
<br>



<h3 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h3><ul>
<li><a target="_blank" rel="noopener" href="https://zhuanlan.zhihu.com/p/143472559">一文看懂风控模型所有</a></li>
</ul>

            </div>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/walker_sue/categories/%E9%A3%8E%E6%8E%A7%E6%A8%A1%E5%9E%8B/">风控模型</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/walker_sue/tags/BI/">BI</a>
                    
                      <a class="hover-with-bg" href="/walker_sue/tags/%E9%A3%8E%E6%8E%A7%E6%A8%A1%E5%9E%8B/">风控模型</a>
                    
                      <a class="hover-with-bg" href="/walker_sue/tags/%E8%AF%84%E5%88%86%E5%8D%A1%E6%A8%A1%E5%9E%8B/">评分卡模型</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！</p>
              
              
                <div class="post-prevnext row">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/walker_sue/2021/05/20/week12-lr-woe/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">逻辑回归与评分卡模型评价标准</span>
                        <span class="visible-mobile">Vorheriger</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/walker_sue/2021/04/25/week10-rfm/">
                        <span class="hidden-mobile">智能供应链与评分卡模型</span>
                        <span class="visible-mobile">Nächster</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
          </article>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;TOC</p>
  <div id="tocbot"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    
  </main>

  
    <a id="scroll-top-button" href="#" role="button">
      <i class="iconfont icon-arrowup" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">Suchen</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">Stichwort</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> 
  </div>
  

  

  
</footer>

<!-- SCRIPTS -->
<script  src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js" ></script>
<script  src="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script  src="/walker_sue/js/debouncer.js" ></script>
<script  src="/walker_sue/js/main.js" ></script>

<!-- Plugins -->


  
    <script  src="/walker_sue/js/lazyload.js" ></script>
  



  



  <script defer src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js" ></script>
  <script  src="/walker_sue/js/clipboard-use.js" ></script>







  <script  src="https://cdn.staticfile.org/tocbot/4.11.1/tocbot.min.js" ></script>
  <script>
    $(document).ready(function () {
      var boardCtn = $('#board-ctn');
      var boardTop = boardCtn.offset().top;

      tocbot.init({
        tocSelector: '#tocbot',
        contentSelector: '#post-body',
        headingSelector: 'h1,h2,h3,h4,h5,h6',
        linkClass: 'tocbot-link',
        activeLinkClass: 'tocbot-active-link',
        listClass: 'tocbot-list',
        isCollapsedClass: 'tocbot-is-collapsed',
        collapsibleClass: 'tocbot-is-collapsible',
        collapseDepth: 0,
        scrollSmooth: true,
        headingsOffset: -boardTop
      });
      if ($('.toc-list-item').length > 0) {
        $('#toc').css('visibility', 'visible');
      }
    });
  </script>



  <script  src="https://cdn.staticfile.org/typed.js/2.0.11/typed.min.js" ></script>
  <script>
    function typing(id, title){
        var typed = new Typed('#' + id, {
            strings: [
              '  ',
              title + "&nbsp;",
            ],
            cursorChar: "_",
            typeSpeed: 70,
            loop: false,
        });
        typed.stop();
        $(document).ready(function () {
            $(".typed-cursor").addClass("h2");
            typed.start();
        });
    }
    
        typing("subtitle", "评分卡模型")
    
  </script>


  <script  src="https://cdn.staticfile.org/anchor-js/4.2.2/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "hover",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script  src="/walker_sue/js/local-search.js" ></script>
  <script>
    var path = "/walker_sue/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      searchFunc(path, 'local-search-input', 'local-search-result');
      this.onclick = null
    }
  </script>



  <script  src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />

  <script>
    $('#post img:not(.no-zoom img, img[no-zoom]), img[zoom]').each(
      function () {
        var element = document.createElement('a');
        $(element).attr('data-fancybox', 'images');
        $(element).attr('href', $(this).attr('src'));
        $(this).wrap(element);
      }
    );
  </script>





  

  
    <!-- MathJax -->
    <script>
      MathJax = {
        tex: {
          inlineMath: [['$', '$'], ['\\(', '\\)']]
        },
        options: {
          renderActions: {
            findScript: [10, doc => {
              document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
                const display = !!node.type.match(/; *mode=display/);
                const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
                const text = document.createTextNode('');
                node.parentNode.replaceChild(text, node);
                math.start = { node: text, delim: '', n: 0 };
                math.end = { node: text, delim: '', n: 0 };
                doc.math.push(math);
              });
            }, '', false],
            insertedScript: [200, () => {
              document.querySelectorAll('mjx-container').forEach(node => {
                let target = node.parentNode;
                if (target.nodeName.toLowerCase() === 'li') {
                  target.parentNode.classList.add('has-jax');
                }
              });
            }, '', false]
          }
        }
      };
    </script>

    <script async src="https://cdn.staticfile.org/mathjax/3.0.5/es5/tex-svg.js" ></script>

  











</body>
</html>
